A multiple-input multiple-output (MIMO) wireless communication system may utilize multiple antennas at both a transmitter and a receiver to transmit and receive data and to improve the range and performance of the system. Data packets may be independently and simultaneously transmitted in parallel using separate MIMO channel subcarriers on different transmission antennas. At each receiver antenna, the independent data packets may be combined and the receiver may recover the separate data signals with a decoder. Data transmitted and received using a MIMO system may be modulated using orthogonal frequency division multiplexing (OFDM) or other modulation schemes. Examples of MIMO-OFDM systems include wireless local area networking using the IEEE 802.11n standard, wireless metropolitan area networking using the IEEE 802.16e/j/m standards, mobile phone communications using the 3GPP LTE standard, and other systems.
A data packet may be characterized by the equation y=HQsteers+n, where y is the received signal vector, H is the channel state information of a channel subcarrier, Qsteer is a spatial steering matrix, s is a transmitted signal vector, and n is an additive noise vector. The spatial steering matrix Qsteer may be configured at the transmitter, based on the channel state information H. In other words, the transmitter may utilize the channel state information H of a channel subcarrier to perform transmit beamforming. Transmit beamforming is a technique that may increase the directivity of transmitted data packets and the signal-to-noise ratio gain at the receiver. Channel state information may be maintained by the transmitter using implicit beamforming, where the transmitter estimates the forward channel from the reverse channel, or using explicit beamforming, where the receiver feeds back channel state information or steering matrix information to the transmitter.
A codebook including matrices may be used to calculate the steering matrix Qsteer. A codebook is a predetermined set of possible steering matrices or possible column vectors of a steering matrix. The final steering matrix Qsteer calculation may be conducted by selecting the best steering matrix or the best combination of steering vectors inside the codebook. Computation complexity may be reduced by using a codebook because Qsteer need not be explicitly derived as in existing systems. Existing systems may calculate the steering matrix Qsteer using singular value decompression (SVD), transmit zero-forcing filter (TxZF), transmit minimum mean square error (TxMMSE), Tomlinson-Harashima precoding (THP), TxMRC, SVD(MRT), cophasing, or other existing algorithms. Such algorithms may require more complex transmitter and receiver design, or have insufficient performance gain, power fluctuation at different transmit antennas, and large overhead for feedback. Therefore, there is a need for an improved codebook selection for transmit beamforming in a MIMO system without these drawbacks.